import os
import django
import random
from datetime import timedelta
from django.utils import timezone

# 设置 Django 环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'knowledge_site.settings')
django.setup()

from core.models import Document

def update_documents():
    """更新文档的浏览量和推荐状态"""
    # 获取所有文档
    documents = Document.objects.all()
    total = documents.count()
    print(f'找到 {total} 个文档')
    
    # 更新浏览量
    for doc in documents:
        # 随机生成浏览量（1-1000）
        doc.views = random.randint(1, 1000)
        # 设置更新时间为最近30天内的随机时间
        days_ago = random.randint(0, 30)
        doc.updated_at = timezone.now() - timedelta(days=days_ago)
        doc.save()
        print(f'已更新文档 "{doc.title}" 的浏览量为 {doc.views}')
    
    # 将浏览量最高的20%的文档标记为热门
    popular_count = int(total * 0.2)
    popular_docs = Document.objects.order_by('-views')[:popular_count]
    for doc in popular_docs:
        doc.is_popular = True
        doc.save()
        print(f'已将文档 "{doc.title}" 标记为热门')
    
    # 随机选择10%的文档作为推荐
    recommended_count = int(total * 0.1)
    recommended_docs = Document.objects.order_by('?')[:recommended_count]
    for doc in recommended_docs:
        doc.is_recommended = True
        doc.save()
        print(f'已将文档 "{doc.title}" 标记为推荐')

if __name__ == '__main__':
    print('开始更新文档...')
    update_documents()
    print('更新完成！') 